// 导入 Express
const express = require('express');
// 导入 第三方中间件
const parser = require('body-parser');
// 导入 cors 解决跨域问题
const cors = require('cors');
// 创建服务器
const app = express();

// 配置中间件解决跨域
app.use(cors()); 

// 创建路由
app.get('/', function(req, res) {
  // 抛出错误
  // throw new Error('服务器发生了错误');
  res.send('Home Page');
})

// 配置解析表单格式中间件，才能获取到req,body的数据
app.use(express.json());
 
app.post('/user', function(req, res) {
  // 抛出错误
  // throw new Error('服务器发生了错误');
  // 在服务器，可以使用req,body这个属性，来接受客户端发送过来的数据
  // 默认情况下，如果不i配置解析表单数据的中间件，则req.body默认为undefined
  console.log(req.body);
  res.send('Home user Page');
})

// 配置解析urlencoded格式数据
// app.use(parser.urlencoded({ extended: false }));
app.use(parser());
app.post('/book', (req, res) => {
  // 获取数据
  console.log(req.body);
  res.send('ok!');
})

app.get('/api/get', (req, res) => {
  // res.setHeader('Access-Control-Allow-Methods', '*');
  res.send({
    status: 0,
    msg: "get 请求成功!",
    data: req.query
  });
})
app.post('/api/post', (req, res) => {
  res.send({
    status: 0,
    msg: "post 请求成功!",
    data: req.body
  });
})
app.delete('/api/delete', (req, res) => {
  res.send({
    status: 0,
    msg: 'delete请求成功'
  })
})

// 创建错误级别的中间件
app.use(function(err, req, res, next) {
  console.log('Error' + err.message);
  res.send('error' + err.message);
  next();
})

// 启动服务器
app.listen(3000, () => {
  console.log('Express running server at http://127.0.0.1:3000');
})